package com.flyou.ccnucenter.utils;

import java.io.File;
import java.io.FileInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
 * ============================================================  
* 项目名称：androidTools   
* 
* 类名称：Md5Parser   
* 
* 类描述：   MD5加密
* 
* 创建人：flyou  
* 
* 创建时间：2015-3-31 下午12:05:49  
*  
* 修改备注：   
* 
* 版本：@version    
*   ============================================================
 */
public class Md5Parser {

	/**
	 * md5加密方法
	 * 
	 * @param password
	 * @return
	 */
	public static String md5Parser(String password) {

		try {
			// 得到一个信息摘要器
			MessageDigest digest = MessageDigest.getInstance("md5");
			byte[] result = digest.digest(password.getBytes());
			StringBuffer buffer = new StringBuffer();
			// 把没一个byte 做一个与运算 0xff;
			for (byte b : result) {
				// 与运算
				int number = b & 0xff;// 加盐
				String str = Integer.toHexString(number);
				// System.out.println(str);
				if (str.length() == 1) {
					buffer.append("0");
				}
				buffer.append(str);
			}

			// 标准的md5加密后的结果
			return buffer.toString();
		} catch (NoSuchAlgorithmException e) {

			e.printStackTrace();
			return "";
		}

	}

	/**
	 * MD54次加密
	 * 
	 * @param md5parser
	 *            第一次MD5加密的数据
	 * @return String 返回进行4次加密的密码
	 */
	public static String forthMd5Parser(String md5parser){
			String forthMd5 = md5Parser((md5Parser(md5parser)));
			
			return forthMd5;
		}
	
	
	 /**
   * 获取文件的md5值
   * @param path 文件的全路径名称
   * @return
   */
  private static String getFileMd5(String path){
    try {
      // 获取一个文件的特征信息，签名信息。
      File file = new File(path);
      // md5
      MessageDigest digest = MessageDigest.getInstance("md5");
      FileInputStream fis = new FileInputStream(file);
      byte[] buffer = new byte[1024];
      int len = -1;
      while ((len = fis.read(buffer)) != -1) {
        digest.update(buffer, 0, len);
      }
      byte[] result = digest.digest();
      StringBuffer sb  = new StringBuffer();
      for (byte b : result) {
        // 与运算
        int number = b & 0xff;// 加盐
        String str = Integer.toHexString(number);
        // System.out.println(str);
        if (str.length() == 1) {
          sb.append("0");
        }
        sb.append(str);
      }
      return sb.toString();
    } catch (Exception e) {
      e.printStackTrace();
      return "";
    }
  }
}
